সি# এ SqlConnection, SqlCommand, এবং SqlDataReader হলো ADO.NET লাইব্রেরির প্রধান উপাদান, যা ডেটাবেস কানেক্টিভিটির জন্য ব্যবহৃত হয়। এগুলোর মাধ্যমে SQL Server ডেটাবেসের সাথে সংযোগ স্থাপন, কুয়েরি এক্সিকিউট করা এবং ডেটা রিড করা সম্ভব হয়।
১. SqlConnection
SqlConnection ক্লাসটি ডেটাবেসের সাথে সংযোগ স্থাপন এবং বন্ধ করার জন্য ব্যবহৃত হয়। SqlConnection এর মাধ্যমে একটি নির্দিষ্ট ডেটাবেসে কানেক্ট করা সম্ভব হয়, যেখানে কানেকশন স্ট্রিং ব্যবহার করে ডেটাবেসের সার্ভার, ডাটাবেজ নাম, ইউজার এবং পাসওয়ার্ড নির্ধারণ করা হয়।
উদাহরণ: SqlConnection দিয়ে সংযোগ স্থাপন
using System;
using System.Data.SqlClient;
public class Program
{
public static void Main()
{
string connectionString = "Data Source=your_server;Initial Catalog=your_database;User ID=your_username;Password=your_password";
using (SqlConnection connection = new SqlConnection(connectionString))
{
try
{
connection.Open();
Console.WriteLine("Connection established successfully!");
}
catch (Exception ex)
{
Console.WriteLine("Error: " + ex.Message);
}
}
}
}
ব্যাখ্যা
- Connection String: ডেটাবেসের তথ্য ধারণ করে, যাতে ডাটাবেসের সাথে সংযোগ স্থাপন করা যায়।
- connection.Open(): ডেটাবেসের সাথে সংযোগ স্থাপন করে।
- connection.Close():
usingব্লকের বাইরে গেলে স্বয়ংক্রিয়ভাবে সংযোগ বন্ধ হয়ে যায়।
২. SqlCommand
SqlCommand ক্লাসটি SQL কুয়েরি বা কমান্ড এক্সিকিউট করার জন্য ব্যবহৃত হয়। এর মাধ্যমে SELECT, INSERT, UPDATE, DELETE প্রভৃতি SQL স্টেটমেন্ট চালানো যায়।
উদাহরণ: SqlCommand দিয়ে SQL কুয়েরি চালানো
using System;
using System.Data.SqlClient;
public class Program
{
public static void Main()
{
string connectionString = "Data Source=your_server;Initial Catalog=your_database;User ID=your_username;Password=your_password";
using (SqlConnection connection = new SqlConnection(connectionString))
{
string query = "INSERT INTO Employees (Name, Age) VALUES (@Name, @Age)";
SqlCommand command = new SqlCommand(query, connection);
// প্যারামিটার সেট করা হচ্ছে
command.Parameters.AddWithValue("@Name", "John Doe");
command.Parameters.AddWithValue("@Age", 30);
try
{
connection.Open();
int rowsAffected = command.ExecuteNonQuery();
Console.WriteLine("Rows affected: " + rowsAffected);
}
catch (Exception ex)
{
Console.WriteLine("Error: " + ex.Message);
}
}
}
}
ব্যাখ্যা
- SqlCommand:
SqlCommandঅবজেক্টqueryএবংconnectionপ্যারামিটার নিয়ে তৈরি করা হয়েছে। - ExecuteNonQuery:
INSERT,UPDATE, এবংDELETEএর মত কমান্ডের জন্য ব্যবহৃত, যা প্রভাবিত রেকর্ডের সংখ্যা প্রদান করে। - Parameters.AddWithValue: SQL ইনজেকশন রোধ করতে প্যারামিটারাইজড কুয়েরি ব্যবহার করা হয়।
৩. SqlDataReader
SqlDataReader ক্লাসটি ডেটাবেস থেকে ডেটা পড়ার জন্য ব্যবহৃত হয়। এটি সাধারণত SELECT কুয়েরির সাথে ব্যবহৃত হয় এবং রিড-ওনলি (শুধুমাত্র পড়ার জন্য) এবং ফরোয়ার্ড-ওনলি (অগ্রসর মান) ডেটা প্রদান করে। SqlDataReader ডেটা রিড করার জন্য একটি দ্রুত ও কার্যকরী পদ্ধতি প্রদান করে।
উদাহরণ: SqlDataReader দিয়ে ডেটা পড়া
using System;
using System.Data.SqlClient;
public class Program
{
public static void Main()
{
string connectionString = "Data Source=your_server;Initial Catalog=your_database;User ID=your_username;Password=your_password";
using (SqlConnection connection = new SqlConnection(connectionString))
{
string query = "SELECT ID, Name, Age FROM Employees";
SqlCommand command = new SqlCommand(query, connection);
try
{
connection.Open();
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
Console.WriteLine("ID: " + reader["ID"]);
Console.WriteLine("Name: " + reader["Name"]);
Console.WriteLine("Age: " + reader["Age"]);
Console.WriteLine("--------------------");
}
reader.Close();
}
catch (Exception ex)
{
Console.WriteLine("Error: " + ex.Message);
}
}
}
}
ব্যাখ্যা
- ExecuteReader:
SELECTকুয়েরি চালানোর জন্য ব্যবহৃত, যাSqlDataReaderঅবজেক্ট প্রদান করে। - reader.Read(): প্রতিটি রেকর্ড পড়ার জন্য ব্যবহৃত।
- reader["ColumnName"]: কলাম থেকে ডেটা পড়তে ব্যবহৃত, যেখানে
ColumnNameহলো ডেটাবেসের কলামের নাম।
ExecuteScalar এবং ExecuteNonQuery মেথড
ExecuteScalar: একটি একক মান (প্রথম কলাম এবং প্রথম রো) রিটার্ন করতে ব্যবহার করা হয়।
string query = "SELECT COUNT(*) FROM Employees";
SqlCommand command = new SqlCommand(query, connection);
int count = (int)command.ExecuteScalar();
Console.WriteLine("Total Employees: " + count);
ExecuteNonQuery: INSERT, UPDATE, এবং DELETE এর মত স্টেটমেন্ট এক্সিকিউট করতে ব্যবহৃত হয় এবং প্রভাবিত রো সংখ্যা প্রদান করে।
string query = "DELETE FROM Employees WHERE ID = @ID";
SqlCommand command = new SqlCommand(query, connection);
command.Parameters.AddWithValue("@ID", 1);
int rowsDeleted = command.ExecuteNonQuery();
Console.WriteLine("Rows deleted: " + rowsDeleted);
সংক্ষেপে
| ক্লাস | ব্যবহার |
|---|---|
| SqlConnection | ডেটাবেসের সাথে সংযোগ স্থাপন এবং বন্ধ করা |
| SqlCommand | SQL কুয়েরি চালানো, যেমন SELECT, INSERT, UPDATE, DELETE |
| SqlDataReader | ডেটাবেস থেকে রিড-ওনলি এবং ফরোয়ার্ড-ওনলি ডেটা পড়া |
সারাংশ
SqlConnection ডেটাবেসের সাথে সংযোগ স্থাপন করে, SqlCommand এর মাধ্যমে SQL স্টেটমেন্ট এক্সিকিউট করা হয় এবং SqlDataReader এর মাধ্যমে ডেটা পড়া হয়। সি# এ ADO.NET ব্যবহার করে এই ক্লাসগুলো দিয়ে সহজেই ডেটাবেসের সাথে ইন্টারঅ্যাকশন করা যায়, যা ডেটাবেস পরিচালনা সহজ করে তোলে।